配置包
一个 Configuration 包是一个OCI 容器镜像,包含Composition、复合资源定义 和任何所需的 Provider 或 函数.
配置包使你的 crossplane 配置完全可移植。
crossplane Providers 和 Functions 也是 crossplane 软件包。
本文件介绍如何安装和管理配置包。
请参阅 Provider 和 Composition Functions 章节,详细了解它们对 packages 的用法。
安装配置
安装带 crossplane 的配置
对象安装配置
值设置为配置包的位置。
例如安装 upbound AWS 参考平台、
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 package: xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0
crossplane 会安装配置中列出的 Composition、复合资源定义和 Providers。
用 Helm 安装
Crossplane 支持在初始安装 Crossplane 时使用 Crossplane Helm 图表安装配置。
被引用
参数与 helm install
一起使用。
例如,安装 upbound AWS 参考平台、
1helm install crossplane \
2crossplane-stable/crossplane \
3--namespace crossplane-system \
4--create-namespace \
5--set configuration.packages='{xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0}'
离线安装
crossplane 从本地软件包缓存中安装软件包。默认情况下,crossplane 软件包缓存是一个 emptyDir volume。
配置 Crossplane,使其被引用PersistentVolumeClaim,以使用包含配置镜像的存储位置。阅读Crossplane 安装文档中有关配置 Crossplane Pod 设置的更多信息。https://crossplane.devops.gold/master/software/install/#customize-the-crossplane-helm-chart).
Provider 配置的 .xpkg
文件名并设置
.
例如,要安装本地存储的 upbound AWS 参考平台版本,请设置
为本地文件名,并将配置的
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: offline-platform-ref-aws
5spec:
6 package: platform-ref-aws
7 packagePullPolicy: Never
安装选项
配置支持多个选项来更改配置包相关设置。
配置修订
当安装现有配置的更新版本时,crossplane 会创建一个新的配置修订版。
使用以下命令查看配置修订版
.
1kubectl get configurationrevisions
2NAME HEALTHY REVISION IMAGE STATE DEP-FOUND DEP-INSTALLED AGE
3platform-ref-aws-1735d56cd88d True 2 xpkg.upbound.io/upbound/platform-ref-aws:v0.5.0 Active 2 2 46s
4platform-ref-aws-3ac761211893 True 1 xpkg.upbound.io/upbound/platform-ref-aws:v0.4.1 Inactive 5m13s
每次只有一个修订处于活动状态,活动修订决定可用资源,包括 Composition 和复合资源定义。
默认情况下,crossplane 只保留一个 Inactive Revisions。
更改 Crossplane 通过配置包维护的修订次数
.
修订历史限制
字段是一个整数,默认值为 “1”。 通过设置
设置为0
。
例如,要更改默认设置并存储 10 个修订版本,请使用
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 revisionHistoryLimit: 10
7# Removed for brevity
配置包拉取策略
被引用
来定义 Crossplane 应在何时将配置包下载到本地的 Crossplane 包缓存。
packagePullPolicy` 选项包括
IfNotPresent
- (默认)只下载不在缓存中的软件包。Always
- 每分钟检查新软件包,并下载缓存中没有的匹配软件包。- Never` - 永远不下载软件包。只从本地软件包缓存中安装软件包。
crossplane
的工作原理与 Kubernetes 容器镜像 image pull policy类似。
crossplane 支持像 Kubernetes 镜像一样使用标签和包摘要散列。
例如,要 “始终 “下载给定的配置软件包,请使用
配置。
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 packagePullPolicy: Always
7# Removed for brevity
修订激活政策
主动 “软件包 Revisions 是主动调节资源的软件包控制器。
默认情况下,Crossplane 会将最近安装的软件包修订版设置为 “激活”。
使用
.
修订激活策略
选项有
- 自动”-(默认)自动激活上次安装的配置。
Manual
- 不自动激活配置。
例如,要将升级行为改为要求手动升级,可设置
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 revisionActivationPolicy: Manual
7# Removed for brevity
从私人注册表安装配置
就像 Kubernetes 使用 “imagePullSecrets “来从私有 registry 安装镜像一样,Crossplane 也使用 “packagePullSecrets “来从私有 registry 安装配置包。
被引用
来提供一个 Kubernetes secrets,以便在下载配置包时用于身份验证。
包
是一个secret列表。
例如,要使用名为
配置一个
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 packagePullSecrets:
7 - name: example-secret
8# Removed for brevity
忽略依赖关系
默认情况下,crossplane 会安装配置包中列出的任何 依赖项。
crossplane 可以忽略配置包的依赖关系,使用
.
大多数配置包括所需 Providers 的依赖关系。
如果 “配置 “忽略了依赖关系,则必须手动安装所需的 Provider。
例如,要禁用依赖关系解析,请配置
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 skipDependencyResolution: true
7# Removed for brevity
忽略 crossplane 版本要求
默认情况下,如果 Crossplane 版本不符合要求,Crossplane 不会安装配置包。
crossplane 可以使用
.
例如,要将配置包安装到不支持的 crossplane 版本中,请配置
.
1apiVersion: pkg.crossplane.io/v1
2kind: Configuration
3metadata:
4 name: platform-ref-aws
5spec:
6 ignoreCrossplaneConstraints: true
7# Removed for brevity
验证配置
使用
.
工作配置将 “已安装 “和 “健康 “报告为 “真”。
1kubectl get configuration
2NAME INSTALLED HEALTHY PACKAGE AGE
3platform-ref-aws True True xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0 54s
管理依赖关系
配置包可能包括对其他包(包括功能、Provider 或其他配置)的依赖。
如果 crossplane 无法满足 “配置 “的依赖关系,则 “配置 “会将 “HEALTHY “报告为 “False”。
例如,upbound AWS 参考平台的此安装为 HEALTHY: false
。
1kubectl get configuration
2NAME INSTALLED HEALTHY PACKAGE AGE
3platform-ref-aws True False xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0 71s
要查看更多关于配置为何不 “健康 “的信息,请引用
.
1kubectl describe configurationrevision
2Name: platform-ref-aws-a30ad655c769
3API Version: pkg.crossplane.io/v1
4Kind: ConfigurationRevision
5# Removed for brevity
6Spec:
7 Desired State: Active
8 Image: xpkg.upbound.io/upbound/platform-ref-aws:v0.6.0
9 Revision: 1
10Status:
11 Conditions:
12 Last Transition Time: 2023-10-06T20:08:14Z
13 Reason: UnhealthyPackageRevision
14 Status: False
15 Type: Healthy
16 Controller Ref:
17 Name:
18Events:
19 Type Reason Age From Message
20 ---- ------ ---- ---- -------
21 Warning LintPackage 29s (x2 over 29s) packages/configurationrevision.pkg.crossplane.io incompatible Crossplane version: package is not compatible with Crossplane version (v1.12.0)
活动
显示
并提示当前版本的 crossplane 不符合配置包要求。
创建配置
crossplane 配置包是包含一个或多个 YAML 文件的 OCI 容器镜像。
配置包完全符合 OCI 标准,任何能生成 OCI 镜像的工具都能生成配置包。
强烈建议使用 Crossplane 命令行工具为 Crossplane 软件包的构建提供错误检查和格式化。
使用第三方工具构建软件包时,请阅读Crossplane 软件包规范 了解软件包要求。
配置包需要一个 crossplane.yaml
文件,并可能包括 Composition 和 CompositeResourceDefinition 文件。
crossplane.yaml 文件
要使用 crossplane CLI 构建配置包,请创建一个名为
文件。
文件定义了配置的要求和名称。
crossplane.yaml
的文件。
配置包被引用为
crossplane API group。
中指定任何其他配置、功能或 Provider。
可选择使用
选项来要求特定或最小的软件包版本。
您还可以使用
选项为该配置定义特定或最低版本。
crossplane
对象或所需版本是可选的。
1$ cat crossplane.yaml
2apiVersion: meta.pkg.crossplane.io/v1alpha1
3kind: Configuration
4metadata:
5 name: test-configuration
6spec:
7 dependsOn:
8 - provider: xpkg.upbound.io/crossplane-contrib/provider-aws
9 version: ">=v0.36.0"
10 crossplane:
11 version: ">=v1.12.1-0"
构建 package
被引用crossplane CLI 命令 crossplane xpkg build --package-root=<directory>
创建软件包。
其中 <directory>
是包含 crossplane.yaml
文件和任何 Composition 或 CompositeResourceDefinition YAML 文件的目录。
CLI 会递归搜索目录中的 .yml
或 .yaml
文件,以便将其包含在 packages 中。
您必须忽略任何其他带有 --ignore=<file_list>
的 YAML 文件。例如,crossplane xpkg build --package-root=test-directory --ignore=".tmp/*"
.
不支持包括claim在内的非 Composition 或 CompositeResourceDefinitions 的 YAML 文件。
默认情况下,crossplane 会创建一个配置名称和软件包内容 SHA-256 哈希值的 .xpkg
文件。
例如
名为
crossplane CLI 会构建一个名为 test-configuration-e8c244f6bf21.xpkg
的软件包。
1apiVersion: meta.pkg.crossplane.io/v1alpha1
2kind: Configuration
3metadata:
4 name: test-configuration
5# Removed for brevity
使用 --output=<filename>.xpkg
选项指定输出文件。
例如,要从名为 test-directory
的目录中构建软件包,并在当前工作目录中生成名为 test-package.xpkg
的软件包,请使用以下命令:
1crossplane xpkg build --package-root=test-directory --output=test-package.xpkg